#include "Motor.h" 

void Motor_Init(void)
{
	/*电机引脚
	左轮
	PWMA——PA6
	AIN1——PB15
	AIN2——PB14
	
	右轮
	PWMB——PA7
	BIN1——PB12
	BIN2——PB13
	
	正转：IN1（1） IN2（0）
	反转：IN1（0） IN2（1）
	
	*/
	//左轮初始化
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	PWM_init_T3_CH1_PA6(0);//已经打开定时器3
	
	//右轮初始化
	PWM_init_T3_CH2_PA7(0);
}

void Motor_SetSpeed_L(int speed)
{
	Limit_int(speed,-100,100);
	if(speed > 0)
	{
		
		GPIO_SetBits(GPIOB, GPIO_Pin_14);
		GPIO_ResetBits(GPIOB, GPIO_Pin_15);
		TIM_SetCompare1(TIM3,speed);//用于单独修改通道1的CCR值
	}
	else
	{
		speed *= (-1);
		GPIO_SetBits(GPIOB, GPIO_Pin_15);
		GPIO_ResetBits(GPIOB, GPIO_Pin_14);
		TIM_SetCompare1(TIM3,speed);//用于单独修改通道1的CCR值
	}
}
void Motor_SetSpeed_R(int speed)
{
	Limit_int(speed,-100,100);
	if(speed > 0)
	{
		
		GPIO_SetBits(GPIOB, GPIO_Pin_12);
		GPIO_ResetBits(GPIOB, GPIO_Pin_13);
		TIM_SetCompare2(TIM3,speed);//用于单独修改通道1的CCR值
	}
	else
	{
		speed *= (-1);
		GPIO_SetBits(GPIOB, GPIO_Pin_13);
		GPIO_ResetBits(GPIOB, GPIO_Pin_12);
		TIM_SetCompare2(TIM3,speed);//用于单独修改通道1的CCR值
	}
}
